﻿//文档就绪函数
$(function () {
    //初始化表格
    ShowProcessTasks();
});


//工序任务列表展示
function ShowProcessTasks() {
    layui.use(function () {

        // 点击导出按钮
        document.getElementById('exportBtn').addEventListener('click', function () {
            var checkStatus = table.checkStatus('ProcessTasksTable');  // 获取当前表格的选中状态
            var selectedData = checkStatus.data;  // 获取选中的数据
            if (selectedData.length === 0) {
                alert('请先选择要导出的数据!');
                return;
            }
            var filteredData = selectedData.map(function (item) {
                // 创建一个新对象，只包含您想要的属性
                return {
                    '工序任务Id': item.processTasksId,
                    '任务编号': item.taskNumber,
                    '任务状态': item.taskStatus,
                    '优先级': item.priority,
                    '生产批次': item.productionBatch,
                    '批次号': item.batchNumber,
                    '工序名称': item.processName,
                    '成品编号': item.productNumber,
                    '创建人': item.createdBy,
                    '创建时间': item.createdDate,
                    '修改人': item.updatedBy,
                    '修改时间': item.updatedDate,
                    '删除人': item.deletedBy,
                    '删除时间': item.deletedDate,
                    '是否删除': item.isDeleted
                };
            });

            // 使用 XLSX 导出选中的数据
            var wb = XLSX.utils.book_new();
            var ws = XLSX.utils.json_to_sheet(filteredData); // 将选中的数据转换为工作表
            XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');

            // 导出为 Excel 文件
            XLSX.writeFile(wb, '工序任务列表.xlsx');
        });

        var table = layui.table;
        var TaskNumber = $("#TaskNumber").val();
        var TaskStatus = $("#TaskStatus").val();

        //执行渲染
        table.render({
            elem: '#ProcessTasksTable',
            page: {
                limit: 15, //每页显示的条数
                limits: [15, 20, 25, 30] //每页显示条数的选择项
            },
            cols: [[
                { type: 'checkbox', fixed: 'left' },
                { field: 'taskNumber', title: '任务编号', width: 130 },
                { field: 'taskStatus', title: '任务状态', width: 130 },
                { field: 'priority', title: '优先级', width: 130 },
                { field: 'productionBatch', title: '生产批次', width: 130 },
                { field: 'processName', title: '工序名称', width: 130 },
                { field: 'productNumber', title: '成品编号', width: 130 },
                { field: 'createdBy', title: '创建人', width: 130 },
                { field: 'createdDate', title: '创建时间', width: 160 },
                {
                    field: '', title: '操作', width: 180, templet: function (d) {
                        let taskStatus = d.taskStatus; // 假设任务状态已经作为数据字段传递过来
                        let productionExecution = '<a class="layui-btn layui-btn-blue layui-btn-xs" data-process-tasks-id="' + d.processTasksId + '" onclick="handleNavigation(this)">生产执行</a>';
                        let pauseButton = '';
                        let closeButton = '';

                        if (taskStatus === '进行中') {
                            pauseButton = '<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del" onclick="PauseProcessTask(' + d.processTasksId + ')">暂停</a>';
                        }

                        if (taskStatus === '已完成') {
                            closeButton = '<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del" onclick="CustomsDeclaration(' + d.processTasksId + ')">关单</a>';
                        }

                        return productionExecution + pauseButton + closeButton;
                    }
                }
            ]],
            //数据接口
            data: []
        });
        //请求数据
        $.ajax({
            url: '../ProcessTasks/GetProcessTasksList',
            type: "get",
            data: {
                PageIndex: 1,
                PageSize: 15,
                TaskNumber: TaskNumber,
                TaskStatus: TaskStatus
            },
            success: function (data) {
                data = JSON.parse(data);
                console.log(data);
                table.reload('ProcessTasksTable', {
                    pagge: {
                        limit: 15,
                        limits: [15, 20, 25, 30]
                    },
                    data: data.data.list
                });
            },
            error: function () {
                console.log("请求失败");
            }

        });
    });
}

// 点击生产执行按钮--跳转到生产执行页面
 function handleNavigation(element) {
    var processTasksId = element.getAttribute('data-process-tasks-id');
    // 移除可能的引号
    processTasksId = processTasksId.replace(/^['"]|['"]$/g, '');
    window.location.href = '/ProcessTasks/ManufacturingExecution/' + processTasksId;
};



//暂停工序任务
function PauseProcessTask(processTasksId) {
    layer.confirm('确认暂停吗？', {
        btn: ['确认', '取消'] //按钮
    }, function () {
        $.ajax({
            url: '../ProcessTasks/UpdateProcessTasksStatus',
            type: "Post",
            data: {
                processTasksId: processTasksId,
                taskStatus: "暂停",
                token:localStorage.getItem("token")
            },
            success: function (data) {
                data = JSON.parse(data);
                if (data.code === 1) {
                    layer.msg("暂停成功", { icon: 1 });
                    ShowProcessTasks();
                } else {
                    layer.msg("暂停失败", { icon: 2 });
                }
            },
            error: function () {
                console.log("请求失败");
            }
        });
    }, function () {
        layer.msg('已取消', {
            time: 2000, //2s后自动关闭
            btn: ['知道了']
        });
    });
}


//关单工序任务
function CustomsDeclaration(processTasksId) {
    layer.confirm('确认关单吗？', {
        btn: ['确认', '取消'] //按钮
    }, function () {
        $.ajax({
            url: '../ProcessTasks/UpdateProcessTasksStatus',
            type: "Post",
            data: {
                processTasksId: processTasksId,
                taskStatus: "关单",
                token: localStorage.getItem("token")
            },
            success: function (data) {
                data = JSON.parse(data);
                if (data.code === 1) {
                    layer.msg("关单成功", { icon: 1 });
                    ShowProcessTasks();
                } else {
                    layer.msg("关单失败", { icon: 2 });
                }
            },
            error: function () {
                console.log("请求失败");
            }
        });
    }, function () {
        layer.msg('已取消', {
            time: 2000, //2s后自动关闭
            btn: ['知道了']
        });
    });
}